package com.qf.service.impl;

import com.qf.dao.UserDao;
import com.qf.dao.impl.UserDaoImpl;
import com.qf.pojo.User;
import com.qf.service.UserService;
import com.qf.utils.Constants;
import com.qf.utils.MD5Utils;
import com.qf.utils.RandomUtils;

/**
 * @author mkr
 * @version V1.0
 * @Project java2203-mkr
 * @Package com.qf.service
 * @Description:
 * @Date 2022/5/23 17:51
 */
public class UserServiceImpl implements UserService {
    UserDao userDao = new UserDaoImpl();
    @Override
    public User login(String username, String password) {
        //1、根据用户名到数据库查旬用户对象
        User user = userDao.findByUserName(username);
        //2、判断用户是否为空
        if (user == null){
            return null;
        }
        //3、判断用户是否激活，如果不激活，不能登录
        if (!Constants.USER_ACTIVE.equals(user.getStatus())){
            return null;
        }
        //4、判断用户是否为消费者，如果不是不能登录
        if (Constants.ROLE_ADMIN == user.getRole()){
            return null;
        }
        //5. 校验密码是否正确, 使用md5将用户输入的密码加密, 将加密后的密文与数据库
         //中密码的密码文进行对比, 如果一致证明密码正确, 如果不一致证明密码输入错误
        String md5Pwd = MD5Utils.md5(password);
        if (md5Pwd.equals(user.getPassword())){
            return user;
        }
        return null;
    }

    @Override
    public int createUser(User user) {
        //1、密码使用MD5进行加密
        String md5 = MD5Utils.md5(user.getPassword());
        user.setPassword(md5);
        //2、设置消费者状态默认为激活状态
        user.setStatus(Constants.USER_ACTIVE);
        //3、初始化用户角色为消费者
        user.setRole(Constants.ROLE_CUSTOMER);
        //4、初始化消费者随机激活码
        user.setCode(RandomUtils.createActive());
        //5、调用dao完成添加功能
        int count = userDao.addUser(user);
        return 0;
    }

    @Override
    public boolean check(String username) {
        User user = userDao.findByUserName(username);
       //判断用户名是否存在
        if (user == null){
            //用户名不存在，用户名可用
            return true;
        }else {
            //用户名存在，不可用
            return false;
        }

    }


}
